import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// 自定义HMR处理，减少控制台消息
const customHMRPlugin = () => {
  return {
    name: 'custom-hmr',
    handleHotUpdate({ file, server }) {
      // 只对特定文件类型显示HMR消息
      if (file.endsWith('.vue') || file.endsWith('.js') || file.endsWith('.ts')) {
        // 静默处理，不输出到控制台
        return []
      }
    }
  }
}

// https://vite.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    customHMRPlugin(), // 添加自定义HMR插件
  ],
  server: {
    host: '0.0.0.0', // 允许外部访问
    port: 5173,      // 指定端口
    hmr: {
      // 减少HMR日志输出
      overlay: false, // 禁用错误覆盖层
      clientLogLevel: 'warn', // 只显示警告和错误
    },
  },
  // 减少日志输出
  logLevel: 'info', // 显示信息、警告和错误
  clearScreen: false, // 不清屏，减少视觉干扰
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    },
  },
})
